The continuous expansion of the Internet, the expansion and sophistication of enterprise computing networks and systems, the proliferation of content stored and accessible over the Internet, and numerous other factors continue to drive the need for large sophisticated data storage systems. Consequently, as the demand for data storage continues to increase, larger and more sophisticated storage systems are being designed and deployed. Many large scale data storage systems utilize storage appliances that include arrays of storage media. Typically, these storage systems include a file system for storing and accessing files. In addition to storing system files (e.g., operating system files, device driver files, etc.), the file system provides storage and access of user data files. For a user to access a file, one or more input/output (I/O) requests are generated to retrieve data blocks associated with the file from the multiple storage devices associated with the storage system.
Oftentimes, storage devices used by the storage systems may only handle so many I/O requests. For example, storage devices may be limited to ten I/O requests, either by the device itself or by a management software for the storage system. Further, I/O requests may not be completed or serviced in the order that they are received. Rather, many storage devices attempt to maximize the efficiency of retrieving the data blocks by servicing I/O requests in an order that reduces the physical demand on the storage device. For example, the movement and current location of the disk head over the disk drive may be considered when servicing I/O requests to the storage device. As such, particular I/O requests may be delayed in their completion as the storage device retrieves the data blocks stored on the storage medium. This may result in significant delays or slowdowns in processing I/O requests that may negatively impact the performance of the storage system.
It is with these and other issues in mind that various aspects of the present disclosure were developed.